//
//  NSString+TLQString.h
//  Tool
//
//  Created by BlueWind on 2017/10/20.
//  Copyright © 2017年 BlueWind. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>


@interface NSString (TLQString)


/**
 生产 UUID

 @return 返回为 string 的 UUID
 */
+(NSString *)UUID;


/**
 MD5加密

 @return 生成 MD5 加密后的 string
 */
-(NSString *)md5;

//-(NSString*)sha1;

/**
 string 的编码
 @return 编码后的 string
 */
-(NSString*)encode;

/**
 解码

 @return 将编码后的 string 解码
 */
-(NSString *)decode;


/**
 验证是否为邮箱格式
 
 @param email 传入的字符串
 @return 是否为邮箱 YES 为邮箱格式 No 不是邮箱格式
 */
+ (BOOL)validateEmail:(NSString *)email;

-(NSDate *)dateValue;

-(NSURL *)URLValue;

/**
 验证是否为手机号
 
 @return YES 是手机号 NO 不是手机号
 */

-(BOOL)validateMobile;

/**
 用户昵称验证
 
 @param name 传入的字符串
 @return  YES 是 NO 不是
 */
+ (BOOL)validateUserName:(NSString *)name;

/**
 密码格式验证

 @param passWord 传入的字符串
 @return YES 是 NO 不是
 */
+ (BOOL)validatePassword:(NSString *)passWord;


-(BOOL)validateByRegex:(NSString *)regex;

- (NSString*)sha1;


/**
 计算字符串高度

 @param weight 一行字符串的宽度
 @param font 字体大小
 @return 字符串的高度
 */
- (CGFloat)heigthWithWeight:(CGFloat)weight andFont:(CGFloat)font andLineSpacing:(NSInteger )lineSpacing andWordSpacing:(CGFloat )wordSpacing;

/**
 计算字符串宽度（一般字符串只有一行时用此方法）

 @param height 一行字时候的高度
 @param font 字体大小
 @return 字符串的宽度
 */
- (CGFloat)widthWithHeight:(CGFloat)height andFont:(CGFloat)font;

/**
 获取字体的高度

 @param font 字体的大小
 @return 字体的高度
 */
- (CGFloat)font:(NSInteger)font;


/**
 将字典转化为 JSON 字符串

 @param dictionary 传入的字典
 @return  JSON 字符串
 */
+ (NSString *)JSONWithDictionary:(NSDictionary *)dictionary;

/*字符串加密
 *参数
 *plainText : 加密明文
 *key       : 密钥 64位
 */

/**
 DES 加密

 @param plainText 加密明文
 @param key 加密密匙
 @return 加密后的字符串
 */
+ (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key;


/**
 DES 解密

 @param cipherText 解密明文
 @param key 解密密匙
 @return 返回解密后的字符串
 */
+ (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key;

-(NSArray *)arrayDividedByString:(NSString *)separator;

- (NSArray *)arrayDividedByString:(NSString *)separator withBlock:(id (^)(id obj))block;


/**
 *  拼接参数
 *
 *  @param params 参数字典
 *
 *  @return 返回参数字符串 如key=123&value=value
 */
+(NSString*)stringFromParamsDict:(NSDictionary*)params;


/**
 获取手机型号

 @return 手机型号字符串
 */
+(NSString*)deviceVersion;


/**
 根据状态码返回提示语
 */
+ (NSString *)returen:(NSInteger)status;

// 计算字符串大小
- (CGSize)contentSizeWithWidth:(CGFloat)width
                          font:(UIFont *)font
                   lineSpacing:(CGFloat)lineSpacing;
//是否只有一行
- (BOOL)contentHaveOneLinesWithWidth:(CGFloat)width
                                font:(UIFont *)font
                         lineSpacing:(CGFloat)lineSpacing;


+ (BOOL)validateIdentityCard: (NSString *)identityCard;


/**
 字符串竖着显示

 @return 竖着的字符串
 */
- (NSString *)VerticalString;

/**
 显示身份证 加密

 @param idCard 身份证号码
 @return 加密身份证号
 */
+ (NSString *)encryptIdentityCard:(NSString *)idCard;


/**
 字符串开始插入图片
 
 @param imageName 图片名
 @param content 字符串内容
 @return 返回富文本
 */
+ (NSMutableAttributedString *)insertImage:(NSString *)imageName content:(NSString *)content imageSize:(CGRect)frame;


/**
 数字生成字符串

 @param num 数字
 @return 字符串
 */
+ (NSString *)initWithNum:(NSInteger )num;

@end
